home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / C Internet Config / IC Component Debug ƒ / IC Resource ƒ / IC Link In Subs.c next >
Encoding:
Text File  |  1995-12-06  |  11.3 KB  |  139 lines  |  [TEXT/SPM ]

  1. /*
  2.     IC Link In Subs.c
  3.     
  4.     C code for more link in stuff.
  5.     
  6. */
  7.  
  8. #include <Processes.h>
  9. #include <AppleEvents.h>
  10. #include <Aliases.h>
  11.  
  12. #include "IC Types.h"
  13. #include "IC Keys.h"
  14.  
  15. #include "IC Link In Subs.h"
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20.  
  21. // Local Prototypes
  22. Boolean HaveAliasManager(void);
  23. Boolean FindProcess(OSType creator,OSType typ,ProcessSerialNumber* process,FSSpecPtr fs);
  24. OSErr GetVolInfo(StringPtr name,short* vrn,short index);
  25. OSErr ConfirmAppl(OSType creator,FSSpecPtr fss);
  26. OSErr ScanVolume(OSType creator,short vref,FSSpecPtr fs);
  27. OSErr FindApplication(OSType creator,FSSpecPtr fs);
  28. ICError PrepareToLaunch(AppleEvent* theEvent,Boolean tofront,LaunchParamBlockRec* launchThis);
  29. ICError CreateGURLEvent(OSType creator,Handle urlh,AppleEvent* theEvent);
  30. ICError CreateEditPrefEvent(OSType creator,StringPtr key,FSSpecPtr prefsfile,AppleEvent* theEvent);
  31. ICError LaunchFSSpec(FSSpecPtr fs,AppleEvent* theEvent);
  32. ICError SendEvent(AppleEvent* theEvent,OSType creator);
  33. OSErr FSpGetCatInfo(FSSpecPtr fs,short index,CInfoPBRec* pb);
  34. OSErr FSSpecToFullPath(FSSpecPtr fs,StringPtr path);
  35. OSErr GetVolumeStuff(StringPtr name,long date,short* vrn);
  36.  
  37. #ifdef __cplusplus
  38. }
  39. #endif
  40.  
  41. void PasStrCopy(StringPtr from,StringPtr to){
  42.     register unsigned char ch,*f,*t;
  43.     
  44.     ch=from[0];
  45.     
  46.     f=from;
  47.     t=to;
  48.     
  49.     *f=*t;
  50.     f++;
  51.     t++;
  52.     
  53.     while (ch){
  54.         *f=*t;
  55.         f++;
  56.         t++;
  57.         ch--;
  58.     }
  59.     
  60. }
  61.  
  62. ICError HaveProcessManager(void){
  63.     long gv;
  64.     
  65.     if ((Gestalt(gestaltOSAttr,&gv)==noErr)&&(gv&gestaltLaunchControl))
  66.         return (ICError)noErr;
  67.     
  68.     return (ICError)unimpErr;
  69. }
  70.  
  71. ICError CanInteract(void){
  72.     ICError err=noErr;
  73.     ProcessInfoRec info;
  74.     ProcessSerialNumber process_us,process_foreground;
  75.     Boolean result;
  76.     
  77.     if (HaveProcessManager()==noErr){
  78.         process_us.highLongOfPSN=0;
  79.         process_us.lowLongOfPSN=kCurrentProcess;
  80.         
  81.         err=GetFrontProcess(&process_foreground);
  82.         
  83.         if (err==noErr)
  84.             err=SameProcess(&process_us,&process_foreground,&result);
  85.         
  86.         if ((err==noErr)&&(!result))
  87.             err=errAENoUserInteraction;
  88.     }
  89.     
  90.     return noErr;
  91.     // should this be
  92.     // return err;
  93. }
  94.  
  95. Boolean HaveNewStandardFile(void){
  96.     long gv;
  97.     
  98.     return ((Gestalt(gestaltStandardFileAttr,&gv)==noErr)&&(gv&gestaltStandardFile58));
  99. }
  100.  
  101. Boolean HaveAliasManager(void){
  102.     long gv;
  103.     
  104.     return ((Gestalt(gestaltAliasMgrAttr,&gv)==noErr)&&(gv&gestaltAliasMgrPresent));
  105. }
  106.  
  107. Boolean FindProcess(OSType creator,OSType typ,ProcessSerialNumber* process,FSSpecPtr fs){
  108.     ProcessInfoRec info;
  109.     OSErr oe;
  110.     long gv;
  111.     
  112.     if (HaveProcessManager()==noErr){
  113.         process->highLongOfPSN=0;
  114.         process->lowLongOfPSN=kNoProcess;
  115.         info.processInfoLength=sizeof(ProcessInfoRec);
  116.         info.processName=(StringPtr)0;
  117.         info.processAppSpec=fs;
  118.         
  119.         while (GetNextProcess(process)==noErr){
  120.             if ((GetProcessInformation(process,&info)==noErr)&&(info.processType==typ)&&(info.processSignature==creator))
  121.                 return true;
  122.         }
  123.     }
  124.     
  125.     return false;
  126. }
  127.  
  128. OSErr GetVolInfo(StringPtr name,short* vrn,short index){
  129.     VolumeParam pb;
  130.     OSErr oe;
  131.     
  132.     if ((name[0]!=0)&&(name[name[0]]!=':')){
  133.         name[name[0]+1]=':';
  134.         name[0]++;
  135.     }
  136.     
  137.     pb.ioNamePtr=name;
  138.     pb.ioVRefNum=*vrn;
  139.     pb